range: Don't invalidate layout when computing marks
authorBenjamin Otte <otte@redhat.com>
Fri, 21 Nov 2014 07:29:37 +0000 (08:29 +0100)
committerBenjamin Otte <otte@redhat.com>
Tue, 25 Nov 2014 18:19:12 +0000 (19:19 +0100)
We now have a function to compute a slider position. Use that one
instead.

gtk/gtkrange.c

index ae61727121a364f41eb63950514d31165d0517bf..80e632a38db8291f30576602850838150f0bac60 100644 (file)
@@ -3963,6 +3963,7 @@ static void
 gtk_range_calc_marks (GtkRange *range)
 {
   GtkRangePrivate *priv = range->priv;
+  GdkRectangle slider;
   gint i;
 
   if (!priv->recalc_marks)
@@ -3972,15 +3973,13 @@ gtk_range_calc_marks (GtkRange *range)
 
   for (i = 0; i < priv->n_marks; i++)
     {
-      priv->need_recalc = TRUE;
-      gtk_range_calc_layout (range, priv->marks[i]);
+      gtk_range_compute_slider_position (range, priv->marks[i], &slider);
+
       if (priv->orientation == GTK_ORIENTATION_HORIZONTAL)
-        priv->mark_pos[i] = priv->slider.x + priv->slider.width / 2;
+        priv->mark_pos[i] = slider.x + slider.width / 2;
       else
-        priv->mark_pos[i] = priv->slider.y + priv->slider.height / 2;
+        priv->mark_pos[i] = slider.y + slider.height / 2;
     }
-
-  priv->need_recalc = TRUE;
 }
 
 static gboolean